package com.hd.core.project.module.service;

import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.hd.core.project.module.domain.ModuleUser;
import com.hd.core.project.module.domain.Select2;
import com.hd.core.project.module.mapper.ModuleUserMapper;
import com.hd.core.project.module.utils.CheckResultUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;


/**
 * 教师用户-服务层
 * <p>教师用户本身就是系统的登陆用户</p>
 * <p>但是这里为了不破坏框架自带的结构所以包装了一个moduleUser来替代</p>
 * 
 * <br/>
 * @since JDK 1.8
 * @version  V1.0
 * @author RichardTang 
 * @date: 2018年8月20日
 * @package com.hd.core.project.module.service
 * @copyright:Copyright (c) 2018, 1245811923@qq.com All Rights Reserved.
 */
@Service
public class ModuleUserService extends ServiceImpl<ModuleUserMapper,ModuleUser> {

	/**
	 * <p>查询班主任教师以Select2的格式返回</p<
	 * <p>这里的班主任教师是需要符合条件的</p>
	 * 
	 * @return select2格式的教师数据
	 */
    public List<Select2> selectList() {
        return baseMapper.selectList();
    }

    /**
     * 根据id来批量设置班主任字段状态
     * 
     * @param type N Y
     * @param ids id
     */
    public int updateMasterTeacherFlagById(Character type, Long ids){
        return baseMapper.updateFlagById(type, Arrays.asList(ids));
    }

    /**
     * 根据id来批量设置班主任字段状态
     * 
     * @param type N Y
     * @param ids id
     */
    public int updateMasterTeachersFlagById(Character type, List<Long> ids){
        return baseMapper.updateFlagById(type,ids);
    }

    /**
     * 根据id来查询教师名称
     * 
     * @param id 教师id
     * @return 教师名称
     */
    @Cacheable(value = "teacherName", key = "#id")
    public String selectTeacherById(Long id){
        return baseMapper.selectTeacherNameById(id);
    }

    /**
     * 校验教师名称是否可选择
     * 
     * @param id 教师id
     * @param name 教师名称
     * @return 1:不可选 0:可选
     */
    public String checkMasterTeacher(Long id,String name) {
        int uniqueResult = baseMapper.checkMasterTeacher(id,name);
        return CheckResultUtils.checkResultToString(uniqueResult);
    }

}
